As the Internet's popularity grows, more businesses are establishing a presence on the Internet. These businesses typically set up web sites that run one or more web applications. Customers browse businesses web sites for numerous reasons. However, the browsing of online consumer retail stores has grown exponentially over the past few years without any stop in sight. With the continued growth, the number of customers and sales increases along with the amount of data associated with such sales. One type of data associated with customer sales is transaction data. One disadvantage of doing business online is that if the web site goes down, becomes unresponsive or otherwise is not properly serving customers, the business is losing potential sales and/or customers. Often times, a web site's unresponsiveness occurs during the transaction between the customer and the business associated with the online web site, resulting is customer dissatisfaction. Similar issues exist with Intranets and Extranets. Thus, there is a need to monitor live web applications and web sites to make sure that they are running properly.
One particular scenario that web application developers seek to avoid is a task that runs too slowly. For example, it may be expected that a task will take a fraction of one second to complete its functions; however, due to something going wrong, the task executes for thirty seconds. A task running too slowly can degrade performance of a web site, degrade performance of a web application, and cause an application to fail, or cause a web site to fail. Thus, there is a need to avoid poorly performing tasks.
When an application is performing poorly, the developer or administrator usually attempts to debug the software to figure out which code is causing the performance issues so that code can be fixed. While it is usually easy to detect when an application is performing poorly because the response time is noticeably slower, it is often very difficult to determine which portion of the software is responsible for the poor performance. Even if the developer can determine which method, function, routine, process, etc. the application was performing when the issues occurred, it is not clear whether the problem was because of that method, function, routine, process, etc. or another method, function, routine, process, etc. called by that method, function, routine, process, etc.
Thus, there is a need to improve the ability to determine which portion of the software is responsible for an application performing poorly.